n^n怎么算

来源:百度知道 编辑:UC知道 时间:2024/05/13 10:11:39
n^n 当n很大时,如9999的9999次,如何存储这个数,我的程序是要将结果的每位相加,我想肯定不是用存储,但用什么方法得到结果呢?谢谢各位龙虾~!
我用——int64存储,有点愚蠢,太意想天开了!请教各位了!谢谢

用数组存储结果。

最简单的方法就是首先让结果数组置为1.然后不断与9999相乘,乘了9999次后数组中存放的就是9999^9999。至于一个数组元素可以存放1位,也可以存放多位,只要注意不溢出即可。

要想速度快点可以找只需要log2(n)次循环就完成计算的乘幂算法(网上多的是);当然要想速度更快,就需要改进乘法运算,使用二分法或者fft之类的乘法运算方法了。
---------------------------
楼上的程序有两个明显问题:
1)m很快就溢出
2)num计算有何用处?楼主根本就没要求

double num=0;//也可以用long型
int n,m;
cin>>n;
for(int i=1;i<=n;i++)
{
m=1;
for(int j=1;j<=i;j++)
m*=i;//次方由循环实现
cout<<" "<<m<<endl;//打出各次方的值,帮助检查结果。
num+=m;
}
我用的C++,也许语法有错误,但是算法应该就是这样
仅供参考

是编程吗?要用这么大的数,用科学计数法就可以存储了